package shoppingmall.reception.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import shoppingmall.reception.dto.Result;
import shoppingmall.reception.pojo.User;
import shoppingmall.reception.service.MemberService;

/**
 * 前台 用户相关controller层
 */
@Slf4j
@RestController
public class MemberController {

    @Autowired
    private MemberService memberService;  //service层实例

    /**
     * 添加一个新用户(注册用户)
     */
    @PostMapping("/reception/user")
    public Result saveMember (@RequestBody User user) {
        //输出日志
        log.info("添加一个新用户,用户名username={}",user.getUsername());
        //调用service层方法
        boolean isSave = memberService.saveMember(user);
        //对返回的结果判断
        if(!isSave){
            return Result.error("用户注册失败!更换用户名进行尝试!");
        }
        return Result.success("用户注册成功!");
    }

    /**
     * 修改平台会员用户信息
     */
    @PutMapping("/reception/user")
    public Result updateMemberInfo (@RequestBody User user) {
        //输出日志
        log.info("修改平台会员用户信息,userId={}",user.getId());
        //调用service层方法
        boolean isEdit = memberService.updateMemberInfo(user);
        //对执行结果进行判断
        if(!isEdit){
            return Result.error("会员用户信息更新失败!");
        }
        //返回信息
        return Result.success("会员信息更新成功!");
    }

    /**
     * 查询平台某会员用户的信息(支持根据用户名 或者 用户手机 进行查询)
     */
    @GetMapping("/reception/user")
    public Result getMemberInfo (@RequestParam String userinfo) {
        log.info("查询平台会员用户信息,userinfo={}",userinfo);
        //调用服务层方法
        User memberInfo = memberService.getMemberInfo(userinfo);
        if(memberInfo != null){
            return Result.success(memberInfo);
        }
        return Result.error("未查询到用户信息!");
    }

    /**
     * 删除平台某会员用户(用户注销功能 用户名username = ? id = ?)
     */
    @DeleteMapping("/reception/user")
    public Result deleteMember (@RequestParam String username){
        //输出日志
        log.info("删除平台会员用户,username={}",username);
        //调用service层方法
        boolean isDel = memberService.deleteMember(username);
        //对执行结果进行判断
        if(!isDel){
            return Result.error("会员用户删除失败!");
        }
        //返回信息
        return Result.success("会员用户删除成功!");
    }
}
